/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * ventana.java
 *
 * Created on 10/03/2010, 11:03:54 PM
 */

package ManagerProyect;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.*;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;

/**
 *
 * @author sergio
 */
public class ventana extends javax.swing.JFrame {

  public static   DefaultMutableTreeNode raiz = new DefaultMutableTreeNode("Proyectos");
  public static   DefaultTreeModel modelo = new DefaultTreeModel(raiz);
  public static   JTree tree = new JTree(modelo);
  public static   String dirProyecto;
  public static   String dirSrc;
  public static   String dirImg;
  crearProyecto nuevo=new crearProyecto();
 public static ArrayList proyectos=new ArrayList();
 public static ArrayList clases=new ArrayList();
 public static int filesOpening=0;
 Metodos metodos=new Metodos();
 public static LinkedList proyectoActual=new LinkedList();
 public static boolean proyectoAbierto=false;
 public static ArrayList clasesDeProyecto=new ArrayList();
 public static ArrayList archivosAbiertos=new ArrayList();
 public static Proyecto  proyectoPrincipal=null;
 public static ArrayList erroresSintacticos=new ArrayList();
 public static int principal=0;


    /** Creates new form ventana */
    public ventana() {
        initComponents();
        this.jScrollPane1.setViewportView(tree);
        this.jTabbedPane1.setAutoscrolls(true);


tree.addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent me) {
        doMouseClicked(me);
      }
});
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jSplitPane2 = new javax.swing.JSplitPane();
        jSplitPane1 = new javax.swing.JSplitPane();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel2 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        areaErrores = new javax.swing.JTextArea();
        jToolBar1 = new javax.swing.JToolBar();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jSeparator1 = new javax.swing.JSeparator();
        jMenuItem3 = new javax.swing.JMenuItem();
        jSeparator3 = new javax.swing.JSeparator();
        jMenuItem10 = new javax.swing.JMenuItem();
        jMenuItem11 = new javax.swing.JMenuItem();
        jSeparator4 = new javax.swing.JSeparator();
        jMenuItem18 = new javax.swing.JMenuItem();
        jMenuItem12 = new javax.swing.JMenuItem();
        jSeparator7 = new javax.swing.JSeparator();
        jMenu3 = new javax.swing.JMenu();
        jMenuItem4 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jSplitPane2.setDividerLocation(450);
        jSplitPane2.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);

        jSplitPane1.setDividerLocation(150);
        jSplitPane1.setLeftComponent(jScrollPane1);

        jTabbedPane1.setAutoscrolls(true);
        jSplitPane1.setRightComponent(jTabbedPane1);

        jSplitPane2.setTopComponent(jSplitPane1);

        areaErrores.setColumns(20);
        areaErrores.setRows(5);
        jScrollPane2.setViewportView(areaErrores);

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 660, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jSplitPane2.setRightComponent(jPanel2);

        jToolBar1.setRollover(true);

        jButton1.setText("Fuente");
        jButton1.setFocusable(false);
        jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar1.add(jButton1);

        jButton2.setText("Diseño");
        jButton2.setFocusable(false);
        jButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar1.add(jButton2);

        jMenu1.setText("Proyecto");
        jMenu1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenu1ActionPerformed(evt);
            }
        });

        jMenuItem1.setText("Proyecto Nuevo");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);
        jMenu1.add(jSeparator1);

        jMenuItem3.setText("Abrir Proyecto");
        jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem3ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem3);
        jMenu1.add(jSeparator3);

        jMenuItem10.setText("Guardar");
        jMenuItem10.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem10ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem10);

        jMenuItem11.setText("Guardar como");
        jMenu1.add(jMenuItem11);
        jMenu1.add(jSeparator4);

        jMenuItem18.setText("Cerrar Proyecto");
        jMenuItem18.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem18ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem18);

        jMenuItem12.setText("Salir");
        jMenuItem12.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem12ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem12);
        jMenu1.add(jSeparator7);

        jMenuBar1.add(jMenu1);

        jMenu3.setText("Ventana");

        jMenuItem4.setText("Proyectos Abiertos");
        jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem4ActionPerformed(evt);
            }
        });
        jMenu3.add(jMenuItem4);

        jMenuBar1.add(jMenu3);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(29, 29, 29)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jToolBar1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 686, Short.MAX_VALUE)
                    .addComponent(jSplitPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 686, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(37, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jSplitPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 531, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(38, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jMenu1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenu1ActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jMenu1ActionPerformed

/********************************   NEW  PROYECTO *****************************/

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed

   

    }//GEN-LAST:event_jMenuItem1ActionPerformed

    private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem4ActionPerformed
    jtable table=new jtable();
    table.cargar();// TODO add your handling code here:
    }//GEN-LAST:event_jMenuItem4ActionPerformed

    /***************** NEW FILE  **************************/

    /********************** OPEN PROYECT   ********************************/

    private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed
         JFileChooser abrir = new JFileChooser();
         String archivo;
         int seleccion= abrir.showOpenDialog(null);

                 
                        if (seleccion==JFileChooser.APPROVE_OPTION)
                        {
                            File direccion= abrir.getSelectedFile();//el archivo que seleccione lo guarda en dir que es la direccion

            try {
                //el archivo que seleccione lo guarda en dir que es la direccion
               archivo=direccion.getCanonicalPath();
                try {
                   // parserXml.cargar(archivo);

                    Proyecto proyect=(Proyecto)proyectos.get(proyectos.size()-1);
                    String nameProyect=proyect.name;
                    proyectoActual.push(proyect);
                    proyectoAbierto=true;
                    proyectoPrincipal=proyect;
                    nuevo.abrirProyectoSinClases(nameProyect);
                       for(int j=0;j<proyect.listaTablas.size();j++)
                     {
                         Table tempTable=(Table)proyect.listaTablas.getLast();

                         nuevo.añadirClasesArbol(nameProyect,tempTable.nameTable);
                        
                      }
             



                } catch (Exception ex) {
                    Logger.getLogger(ventana.class.getName()).log(Level.SEVERE, null, ex);
                }

            } catch (IOException ex) {
                Logger.getLogger(ventana.class.getName()).log(Level.SEVERE, null, ex);
            }

                            


                        }      // TODO add your handling code here:
    }//GEN-LAST:event_jMenuItem3ActionPerformed

    /************  GUARDAR PROYECTO    ******************************/
    private void jMenuItem10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem10ActionPerformed


 // TODO add your handling code here:
    }//GEN-LAST:event_jMenuItem10ActionPerformed

    private void jMenuItem18ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem18ActionPerformed
 nuevo.cerrarProyecto(proyectoPrincipal.name);       // TODO add your handling code here:
    }//GEN-LAST:event_jMenuItem18ActionPerformed

    /*****************  NEW FILE  *****************************/

    /******************  ABRIR ARCHIVO  *******************************/

    private void jMenuItem12ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem12ActionPerformed

    System.exit(0);// TODO add your handling code here:
    }//GEN-LAST:event_jMenuItem12ActionPerformed

   public  void doMouseClicked(MouseEvent event) {

     if(event.getClickCount() == 2) {
    TreePath tp = tree.getPathForLocation(event.getX(), event.getY());


    if (tp != null)
    {
        int num=tp.getPathCount();
if(num==2)
{
  FormularioEstablecerPrincipal prin=new FormularioEstablecerPrincipal(this,true);
  prin.setVisible(true);
   if(prin.establecido==true)
    {
String nameProyecto1=tp.getPathComponent(1).toString();

proyectoPrincipal=metodos.buscarProyecto(nameProyecto1);

System.out.println(nameProyecto1);
System.out.println("proyecto principal  "+proyectoPrincipal.name);


    }



}
else   if(num>3)
      {
          String nameClase=tp.getLastPathComponent().toString();
          String nameProyecto=tp.getPathComponent(1).toString();
System.out.println(nameProyecto);
          System.out.println(nameClase);
          System.out.println(nameProyecto);

           String pathProyecto=metodos.buscarPathProyecto(nameProyecto);
           System.out.println(pathProyecto);

          
      }


    }
    else
    {
        //jTextField1.setText("");
    }
  }}
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ventana().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    public static javax.swing.JTextArea areaErrores;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu3;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem10;
    private javax.swing.JMenuItem jMenuItem11;
    private javax.swing.JMenuItem jMenuItem12;
    private javax.swing.JMenuItem jMenuItem18;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JMenuItem jMenuItem4;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSeparator jSeparator3;
    private javax.swing.JSeparator jSeparator4;
    private javax.swing.JSeparator jSeparator7;
    private javax.swing.JSplitPane jSplitPane1;
    private javax.swing.JSplitPane jSplitPane2;
    public static javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JToolBar jToolBar1;
    // End of variables declaration//GEN-END:variables



}
